From e2c38ddc22dc0bec57b70eafd3e38b5e52596a3e Mon Sep 17 00:00:00 2001 From: Carlos Garnacho Date: Thu, 6 Apr 2017 13:55:35 +0200 Subject: [PATCH] gtkwidget: Add private set_pass_through() call We could eventually support pointer-event in CSS here, in the mean time add this call to replace the GdkWindow API. --- gtk/gtkwidget.c | 16 +++++++++++++++- gtk/gtkwidgetprivate.h | 4 ++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/gtk/gtkwidget.c b/gtk/gtkwidget.c index 92845b21b9..ce3e54f94e 100644 --- a/gtk/gtkwidget.c +++ b/gtk/gtkwidget.c @@ -989,7 +989,8 @@ gtk_widget_real_pick (GtkWidget *widget, { gdouble tx = x, ty = y; - if (!gtk_widget_is_sensitive (child) || + if (gtk_widget_get_pass_through (child) || + !gtk_widget_is_sensitive (child) || !gtk_widget_is_drawable (child)) continue; @@ -15683,3 +15684,16 @@ gtk_widget_get_cursor (GtkWidget *widget) { return widget->priv->cursor; } + +void +gtk_widget_set_pass_through (GtkWidget *widget, + gboolean pass_through) +{ + widget->priv->pass_through = !!pass_through; +} + +gboolean +gtk_widget_get_pass_through (GtkWidget *widget) +{ + return widget->priv->pass_through; +} diff --git a/gtk/gtkwidgetprivate.h b/gtk/gtkwidgetprivate.h index 422969a4d8..8763278104 100644 --- a/gtk/gtkwidgetprivate.h +++ b/gtk/gtkwidgetprivate.h @@ -70,6 +70,7 @@ struct _GtkWidgetPrivate guint child_visible : 1; guint multidevice : 1; guint has_shape_mask : 1; + guint pass_through : 1; /* Queue-resize related flags */ guint resize_needed : 1; /* queue_resize() has been called but no get_preferred_size() yet */ @@ -323,6 +324,9 @@ void gtk_widget_set_cursor (GtkWidget *widget, GdkCursor *cursor); GdkCursor * gtk_widget_get_cursor (GtkWidget *widget); +void gtk_widget_set_pass_through (GtkWidget *widget, + gboolean pass_through); +gboolean gtk_widget_get_pass_through (GtkWidget *widget); /* inline getters */ -- 2.30.2